/***********************************************************************************
 * 文件名： btn_ctrl_config.h
 * 版本： 5
 * 说明：
 * 		独立按钮控制器。扫描按钮，报告各种按钮事件。
 *      静态定义意味着只支持1个逻辑按钮，多按钮识别有2种方案：
 *      1. 将多个按钮（整个键盘）认为是一个逻辑按钮，_Btn_HwIsDown 设置为任意按钮按下为true
 *  ，任意按钮松手为false，在事件发生后再来判断操作的是哪个物理按钮。
 *      2. 使用 btn_ctrl 组件，实例化多个对象，每个对象控制一个或者一组物理按钮。
 *      在合适的地方调用 Btn_Loop 确保其间隔10ms左右会被执行一次。当有按钮事件发生时，本组件
 *  会通过调用 Btn_Event 来进行通知，所以请在需要的地方实现 void Btn_Event(btn_ev_t e) 函
 *  数来接收按钮事件。
 *      在文件 btn_ctrl_config.h 中进行合适的配置。
 * 修改记录：
 * 	2021/04/21: 初版。 刘言。
 *  2021/05/12: 增加 Btn_IsDown()。刘言。
 *  2021/08/19: 支持完整版 POLSYS 。新增 Btn_Init 函数和 _Btn_HwInit 配置。
 *  2021/08/20: 新增消抖配置项。
 *  2022/11/24: 新增 LONG_PRESS_REPEAT 事件极其间隔时间配置。
***********************************************************************************/
#ifndef _BTN_CTRL_CONFIG_H_
#define _BTN_CTRL_CONFIG_H_

// 仅包含需要的文件


// 启用单击事件，不用时注释掉可以节省代码量
#define BTN_USE_CLICK     

// 启用长按事件，不用时注释掉可以节省代码量
#define BTN_USE_LONG_PRESS
    // 长按触发时间(ms,≤2550)
    #define _BTN_LONG_PRESS_TIME        350
    // 长按重复通知间隔时间(ms,≤2550)，按住不动时重复通知 BTN_EV_LONG_PRESS_REPEAT 。设置为2550表示关闭此事件。
    #define _BTN_LONG_PRESS_REPEAT_TIME 100

// 启用判断是否按下的功能(Btn_IsDown)，不用时注释掉可以节省代码量
// 可以用于判断当 Btn_IsDown() != _Btn_HwIsDown() 说明按钮状态需要刷新，不能休眠。
#define _BTN_USE_IS_DOWN_FUNC

// 启用可配置回掉。启用后可使用 Btn_SetCb 设置回调函数，不启用时回调函数名称固定为 Btn_Event 。
#define _BTN_USE_CONFIG_CALLBACK
#ifdef _BTN_USE_CONFIG_CALLBACK
    // 回调使用用户数据参数
    #define _BTN_CALLBACK_USER_DATA
#endif


// 按下消抖延时，单位10ms，可设置成0（不消抖）
#define _BTN_DOWN_DELAY     0

// 松手消抖延时，单位10ms，可设置成0（不消抖）
#define _BTN_UP_DELAY       0





// 设置一些需要引用的外部函数

// 按钮硬件初始化，调用 Btn_Init 时会被调用。
#define _Btn_HwInit()           //Keyboard_Init()

// 按钮硬件是按下的返回真
#define _Btn_HwIsDown()         (BUTON_PIN_IN == 0) //Keyboard_GetLastStatus()





#endif
